import os
import logging
from markdown_note import MarkdownNote

# 配置日志
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s'
)


def find_markdown_files(directory):
    """
    遍历指定目录及其子目录，查找所有 Markdown 文件（.md）。
    忽略以 '.' 开头的文件夹（如 .git、.obsidian 等）。

    :param directory: 要搜索的根目录路径。
    :return: 返回一个列表，包含所有找到的 Markdown 文件的完整路径。
    """
    if not os.path.exists(directory):
        logging.error(f"The directory '{directory}' does not exist.")
        raise FileNotFoundError(f"The directory '{directory}' does not exist.")

    markdown_files = []

    for root, dirs, files in os.walk(directory):
        # 移除以 '.' 开头的目录，实现忽略
        dirs[:] = [d for d in dirs if not d.startswith('.')]

        for file in files:
            if file.endswith(".md"):
                full_path = os.path.join(root, file)
                markdown_files.append(full_path)

    return markdown_files


def process_md_files_image_references(md_files_path: list):
    """
    处理多个 Markdown 文件的图片引用。

    :param md_files_path: 多个 Markdown 文件的完整路径。
    """

    for md_file_path in md_files_path:
        note = MarkdownNote(md_file_path)
        note.extract_image_references(images_dir)
        note.update_image_references()


markdown_notes_dir = "/home/chase/PycharmProjects/MarkdownImageReferences/files_test"
images_dir = "/home/chase/PycharmProjects/MarkdownImageReferences/files_test/imgs"

if __name__ == '__main__':

    # 查找所有 Markdown 文件
    md_files = find_markdown_files(markdown_notes_dir)
    logging.debug("找到的 Markdown 文件：")
    for file in md_files:
        logging.debug(file)

    process_md_files_image_references(md_files)
